[org 0x7c00] ; 本程序代码加载到内存的位置是0x7c00

; 设置屏幕模式为文本模式，清除屏幕
mov ax, 3
int 0x10 ; BIOS系统调用，显示器相关功能
; 初始化段寄存器，如果不初始化的话一些虚拟机会报错，如vmware
mov ax, 0
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 0x7c00 ; 初始化栈到0x7c00的位置

mov ax, 0xb800
mov ds, ax ; 将数据段初始化到0xb800，这是文本显示器的内存区域
mov byte [0], 'L' ; 把文本显示器的第一个字符设置成L

; 阻塞在当前行，$表示当前行
jmp $  ; 反复跳转到当前行

; 主引导扇区共512字节，最后两个字节固定是0x55 0xaa，所以需要从上面代码结束位置开始到第510字节全部填充0
; 重复510-(当前行位置$-程序开始位置$$)次数，对应的字节全设置为0
times 510 - ($ - $$) db 0

; 设置两个字节的内容，主引导扇区的最后两个字节必须是0x55 0xaa
; dw 0xaadd  ; 也可以写成这样，小端存储
db 0x55, 0xaa

; 编译 nasm -f bin boot.asm -o boot.bin